/*
 * Copyright 2013 Sigurd Randoll.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package de.digiway.rapidbreeze.server.config;

import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Properties;

/**
 *
 * @author Sigurd
 */
public class ServerConfigurationFixtures {

    private static ServerConfigurationFixtures config;
    private static Properties serverProperties;

    public static ServerConfigurationFixtures getInstance() {
        if (config == null) {
            config = new ServerConfigurationFixtures();

            try (InputStream is = ServerConfigurationFixtures.class.getClassLoader().getResourceAsStream("server.properties")) {
                serverProperties = new Properties();
                serverProperties.load(is);
            } catch (IOException ex) {
                throw new IllegalStateException("Cannot read server properties.", ex);
            }
        }
        return config;
    }

    public Path getHome() {
        String home = System.getProperty("user.home");
        if (home != null && !home.isEmpty()) {
            try {
                Path path = Paths.get(home, ".rapidbreeze");
                if (Files.exists(path) && Files.isDirectory(path)) {
                    return path;
                }
                return Files.createDirectories(path);
            } catch (IOException ex) {
                throw new IllegalStateException("Cannot find configuration directory.", ex);
            }
        }
        throw new IllegalStateException("Cannot find user home directory.");
    }

    public Path getObjectStorageLocation() {
        Path path = getHome().resolve("rapidbreeze.db");
        return path;
    }

    public String getServerVersion() {
        return serverProperties.getProperty("ServerApplicationVersion");
    }
}
